/**
 * 识别二维码和条形码
 *
 * 需要安装以下依赖:
 * npm install jimp zbar.wasm
 */

const path = require('path');
const { exec } = require('child_process');
const { Jimp } = require('jimp');
const { scanImageData } = require('zbar.wasm');

// 获取传递给脚本的参数（排除前两个默认参数）
const args = process.argv.slice(2);
const filePath = args[0];
const ext = path.extname(filePath).toLowerCase();

async function decodeImage(filePath) {
    try {
        const image = await Jimp.read(filePath);
        // 使用zbar.wasm识别条形码和二维码
        const imageData = {
            data: new Uint8ClampedArray(image.bitmap.data.buffer),
            width: image.bitmap.width,
            height: image.bitmap.height
        };
        const results = await scanImageData(imageData);
        results.forEach(result => {
            console.log('解码结果:', result.decode());
        });

    } catch (error) {
        console.error('解码失败:', error);
    }
}

if (['.png', '.jpg', '.jpeg', '.bmp', '.gif'].includes(ext)) {
    decodeImage(filePath);
    // 不关闭命令窗口
    exec('pause', (error, stdout, stderr) => {
        if (error) {
            console.error(`执行 pause 命令时发生错误: ${error}`);
            return;
        }
        console.log(stdout);
    });
} else {
    console.error('不支持的文件类型:', ext);
}
